package filecopy;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.nio.ByteBuffer;

public class Pojie {
	public static void main(String[] args) throws IOException {
		File f = new File("T:\\系统文件夹\\桌面\\fdtUI.jar");
		FileInputStream fis = new FileInputStream(f);
		FileReader fr = new FileReader(f);
		BufferedReader b = new BufferedReader(fr);
		int i = 0;
		
		ByteBuffer buffer = ByteBuffer.allocate(1811888);
		
		
		while(true) {
			i = fr.read();
			if(i == -1) {
				break;
			}
			buffer.put((byte) i);
		}
		
		int filesize = buffer.position();
		
		buffer.flip();
		
		int firstPacketSize = buffer.getInt();
		int secondPacketSize = filesize - 4 - firstPacketSize;
		
		byte [] firstPacket = new byte[firstPacketSize];
		byte[] sePacket = new byte[secondPacketSize];
		
//		破解：
//		fdtUI.jar 的头4个字节，是说明第一个jar包的大小的，记为 x，
//		把里面的16进制转成10进制，就能得到字节数。从第5个字节开始，
//		取 x 个字节，导出为文件，就是第一个jar包，
//		用反编译工具或者解压软件就能处理了。具体的破解细节，
//		我想我不用多说了，把这个jar导出来，其他的就不是问题了。
//		再把fdtUI.jar 后面的部分导出，就是第二个jar包，备用。
//
		
		
		buffer.get(firstPacket, 0, firstPacketSize);
		
//		File f2 = new File("T:\\系统文件夹\\桌面\\firstPacketfdtUI.jar");
//		f2.createNewFile();
//		FileOutputStream fos2= new FileOutputStream(f2);
//		fos2.write(firstPacket);
		
		
		buffer.get(sePacket, 0, secondPacketSize);

		
//		File f3 = new File("T:\\系统文件夹\\桌面\\sePacketfdtUI.jar");
//		f3.createNewFile();
//		FileOutputStream fos3 = new FileOutputStream(f3);
//		
//		fos3.write(sePacket);
		

//		还原：
//		把第一个jar破解后，生成新的jar包，字节长度为 y，
//		转成16进制，并补齐4个字节长，放到新jar包的前面，
//		再把前面导出的第二个jar包追加到后面，
//		就是新的 fdtUI.jar 了。替换原来的，即可。
		
		ByteBuffer b2 = ByteBuffer.allocate(4 + secondPacketSize);
		b2.putInt(firstPacketSize);
		b2.put(sePacket);
		
		
		File f3 = new File("T:\\系统文件夹\\桌面\\crackedFDT_UI.jar");
		f3.createNewFile();
		FileOutputStream fos3 = new FileOutputStream(f3);
		fos3.write(b2.array());
		
		
		
		System.out.println("Over");
	}
}
